// ============================== 导入依赖 ============================== //

import API_DEVICE from './API_DEVICE'
import API from './API'
import Vue from 'vue'

// ============================== 导出异步调用 ============================== //

export default {
  // —————————————————————————————— 列表 —————————————————————————————— //

  async remoteList({ state: { param } }) {
    const { subSystemId } = param
    if (!subSystemId) return

    const [num, arr] = await API.getList(param)
    return [num, transList(arr)]
  },

  // —————————————————————————————— 增 —————————————————————————————— //

  async remoteAdd({ state: { one } }) {
    const msg = await API.add(one)
    return msg
  },

  // —————————————————————————————— 删 —————————————————————————————— //

  async remoteDel({ state: { one } }) {
    const msg = await API.del(one)
    return msg
  },

  // —————————————————————————————— 下拉框 —————————————————————————————— //

  async remoteSelect({ state: { selectParam }, getters }) {
    const { subSystemId, areaId } = selectParam
    if (!areaId) return

    const [, arr] = await API_DEVICE.getList(selectParam)
    // 响应式设置
    Vue.set(getters.treeMap[areaId], `device_${subSystemId}`, arr)
    return transSelect(arr)
  },
}

// ============================== 转换方法 ============================== //

const transList = (arr) => {
  arr.forEach((item) => {
    item.site = JSON.parse(item.siteJson || '{}')
  })
  return arr
}

const transSelect = (arr) => {
  arr.forEach((item) => (item.deviceId = item.id))
  return arr
}
